面对黑客攻击,京东数科WAF建设这样做!
随着互联网与物联网技术的快速发展,网络威胁复杂多样。安全建设和黑客攻击一直就是一场道与魔的对抗博弈。
作为服务提供方,必须对黑客攻击者做到知己知彼,才能采取准确有效的安全对策来应对非法攻击。黑客常用的攻击方法可以说是变幻莫测,不过仔细分析后也会发现整个攻击的过程是有规律可循的,一般的黑客攻击过程大致如下:
如上图所示,黑客的攻击入侵过程主要包含两部分:一是突破用户安全防线,即恶意探测和边界突破两个环节;二是黑客成功进入用户网络后,通过持续的渗透、安装工具、横向移动等步骤,最终实现数据窃取或破坏等目的。
显然,黑客开启入侵的第一步即是“恶意探测”,通常也可理解为踩点扫描。黑客为了对攻击目标进行多方了解,最常用的途径就是利用扫描工具对目标用户网络进行端口及漏洞扫描,查看服务器的运行状态等基本信息,一旦发现安全漏洞就会利用其实施攻击,最终达到非法入侵的目的。
因此,要想降低安全事件发生的概率,我们必须从源头阻止黑客的攻击。通过防扫描的方式阻止黑客“恶意探测”,让用户在第一时间发现安全威胁并阻止黑客扫描行为,从而提升黑客攻击成本,为自身赢得宝贵的应对时间,大幅度降低黑客侵入企业内网的风险。
目前常见的WAF都具备攻击请求检测和拦截功能,主要处理逻辑是正常请求和攻击请求的区分。现主流的区分方式主要有规则匹配和机器学习。
▷▶ 规则匹配。这种区分方法是使用时间最长、准确率最高最为可控的一种方式。目前比较成熟,适用与RCE远程命令执行类漏洞的攻击防护(如Fastjson RCE 远程代码执行漏洞),目前被大部分WAF所采用。不过由于这种方式是根据请求的特征来识别攻击,所以当新型攻击出现时,需要根据攻击payload进行防护规则更新,且随着规则集合的不断迭代,规则更新及时性带来安全挑战。
▷▶ 机器学习。使用已知的攻击请求数据作为黑样本,使用正常业务请求作为白样本,利用机器学习算法计算出模型,常见的有SVM、KNN等。这种方式相比较于规则匹配,不用维护规则,但对于未知攻击同样无法识别。
数科盾是京东数科安全团队自主研发的Web应用安全防火墙,适合业务场景的Web应用安全防火墙。使用分布式架构,多节点多活,故障自动切换,具备处理大流量、高并发的能力。能快速响应业务请求,支持规则自定义,贴合业务,适配多种复杂网络环境。
(1)旁路拦截
我们的WAF分为检测模块和请求转发模块,请求转发模块使用nginx改造,将请求转发给WAF检测模块,检测模块检测请求是否是攻击,如果是攻击请求,则由转发模块负责拦截该请求。将攻击检测作为微服务旁路运行,提升了系统的稳定性。
(2)机器学习
离线机器学习
所有的模型以及阈值我们是通过WEBIDS进行模型的计算以及阈值的计算和调试,在WebIDS中效果达到理想值才会上线WAF系统。
通过WebIDS系统收集的样本进行去重->建立数学模型->编写数学模型->设定异常阈值->测试新的请求->判断模型是否能够捕获攻击->将模型推送到waf。
线上机器学习
数学模型包括:
(3)超时控制
在Nginx将请求转发给WAF检测的时候,会对WAF检测进行计时,如果请求检测超过规定时间,Nginx将跳过检测,直接将请求转发给业务Server,避免业务出现高延迟;
(4)高并发
我们的WAF使用分布式架构,处理能力是多节点的总和。在实际环境测试中,16核32GB内存的服务中可以达到10WTPS;
(5)低延迟
我们的WAF在处理请求时使用并行处理,处理上大大降低延迟,实际测试中平均延迟在1ms以内。
在SQL注入数学模型下进行攻击检测,会发现依然有一定误报和漏报。在不断尝试下我们通过词法、语法分析的方法对SQL注入攻击行为进行更为精细的检测,主要流程包括:递归解码、模板组成、词法分析、语法分析、HMM打分和SVM分类。
递归解码
Urlencode、json、 phpserialize、 base64 等格式的解码,每解出来一个都会进入下面的流程,以及json以及kv结构的解析,例如id=1、{"id":"1"} 中提取value 1 每提取一个都进入下面流程;
模板组成
注入模板如下:
通过上一层解析出来的纯净payload,将value=1和value=1/**/AND/**/1915=1915模板进行组装形成。
词法分析
将上一层组成的SQL注入模板进行分析,获得词法树。
select* from t where v = "1"
select * from t where v = '1'
select * from t where v = 1
select * from t where v ="1/**/AND/**/1915=1915"
(ps:下图为啥有方块?老板要求的,咱也不敢说,咱也不敢问)
select * from t where v = '1/**/AND/**/1915=1915'
select * from t where v = 1/**/AND/**/1915=1915
语法分析
绕过的一些语法问题
所有的空格、/**/、/*test*/、--、--**,之类的字符都会处理成为token 146 来处理所以符合了语法合法性要求则可以进行下一步处理。
HMM打分和SVM分类
这需要WEBIDS提供大量的注入样本,多维度来计算到底什么样的语法树是可能为注入,需要大量的维度和样本来说明再次说明实现思路不做详细演示了,通过HMM计算近似样本的值在阈值内的会使用SVM对进行分类,实际运算中HMM运行效率比较高用来快速排除不是注入可能性高的数据(降低延迟),可能性的再利用SVM的正负样本进行分类。
以上举例因篇幅有限不能将所有实例进行演示,只是将常见场景做功能性说明。
后续WAF产品的完善将从两个层面进行:
(1)WAF产品自身功能的完善,包括CC攻击检测及防御能力,与VMS扫描平台、HIDS主机入侵检测平台、蜜罐、堡垒机、防火墙等安全产品进行联动;
(2)业务安全功能,与业务安全及风控团队进行对接,感知并解决一些特定场景的安全风险问题,对业务安全风险问题进行阻断。
WAF是数科基础安全产品的重要组成部分,也是业务纵深防御的第一道安全防线,安全的本质是对抗博弈的过程,为了验证数科WAF的安全防护能力,后续数科安全将联合国内顶级SRC举办WAF引擎众测公测活动,验证SQL注入、RCE命令执行等核心功能的安全防护能力,对每个成功绕过WAF引擎的Payload黑样本进行奖励,以攻促防。【END】
关注技术说,我们只凭技术说话!
点在看会少个bug哦👇